home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-07-28 | 6.8 KB | 283 lines | [TEXT/MPS ] |
- /*
- File: LetterLog.cp
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #ifndef __LETTERLOG__
- #include "LetterLog.h"
- #endif
-
- #ifndef __LETTER__
- #include "Letter.h"
- #endif
-
- #ifndef __ABSTRACTFILE__
- #include "AbstractFile.h"
- #endif
-
- #ifndef __DEBUGGINGEAR__
- #include "DebuggingGear.h"
- #endif
-
- #ifndef __DEBUGASSERT__
- #include "DebugAssert.h"
- #endif
-
- #pragma segment LetterLog
-
- TLetterLog* gBovineLetterLog = nil;
-
- /***********************************|****************************************/
-
- TLetterLog::TLetterLog ( const TFileSpec& file, TPurgeCriteria* purgeCriteria ):
- TDiskLog ( file, purgeCriteria )
- {
- }
-
- /***********************************|****************************************/
-
- TLetterLog::~TLetterLog ()
- {
- }
-
- /***********************************|****************************************/
-
- TLogEntry*
- TLetterLog::ReconstructEntryFromInfoAtCurrentMark ()
- {
- return new TLetterLogEntry;
- }
-
- /***********************************|****************************************/
-
- Boolean
- TLetterLog::AddLetter ( const TLetter* letter )
- {
- if ( letter )
- {
- TLetterLogEntry entry ( *letter );
- return ASSERT ( TDiskLog::AddEntry ( entry ) );
- }
- else
- {
- return false;
- }
- }
-
- /***********************************|****************************************/
-
- TLetterLogEntry*
- TLetterLog::CreateLetterEntry ( EntryIndex index )
- {
- return (TLetterLogEntry*) TDiskLog::CreateEntry ( index );
- }
-
- /***********************************|****************************************/
-
- Boolean
- TLetterLog::AddEntry ( TLogEntry& entry )
- {
- return ASSERT ( TDiskLog::AddEntry ( entry ) );
- }
-
- /***********************************|****************************************/
-
- TLogEntry*
- TLetterLog::CreateEntry ( EntryIndex index )
- {
- return TDiskLog::CreateEntry ( index );
- }
-
- /***********************************|****************************************/
- /***********************************|****************************************/
-
- TLetterLogEntry::TLetterLogEntry ():
- TLogEntry (),
- fSender (),
- fSubject (),
- fStatus ( kUnknown ),
- fMessage ()
- {
- }
-
- /***********************************|****************************************/
-
- TLetterLogEntry::TLetterLogEntry ( const TLetter& letter ):
- TLogEntry (),
- fSender (),
- fSubject (),
- fStatus ( DetermineLetterStatus ( letter ) ),
- fMessage ()
- {
- ASSERT ( letter.GetLetterID ( fID ) );
- ASSERT ( GetRecipientName ( letter, fromRecipient, 1, fSender ) );
- ASSERT ( GetSubject ( letter, fSubject ) );
- ASSERT ( letter.GetSendTimeStamp ( fTime ) );
- }
-
- /***********************************|****************************************/
-
- TLetterLogEntry::~TLetterLogEntry ()
- {
- }
-
- /***********************************|****************************************/
-
- TLetterLogEntry::LetterStatus
- TLetterLogEntry::DetermineLetterStatus ( const TLetter& letter ) const
- {
- if ( letter.GetUnknownRecipientCount () > 0 )
- return kNotCompleted;
- else
- return kCompleted;
- }
-
- /***********************************|****************************************/
-
- Boolean
- TLetterLogEntry::GetRecipientName ( const TLetter& letter, RecipientTypeSet type, unsigned short index, TRString& string ) const
- {
- const TRecipient* recipient = letter.GetRecipient ( type, index );
- ASSERT_RETURN_ZERO ( recipient != nil );
- ASSERT_RETURN_ZERO ( recipient->GetRecipientName ( string ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean
- TLetterLogEntry::GetSubject ( const TLetter& letter, TRString& string ) const
- {
- ASSERT_RETURN_ZERO ( letter.GetSubject ( string ) );
-
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean
- TLetterLogEntry::WriteTo ( TAbstractFile& file ) const
- {
- ASSERT_RETURN_ZERO ( TLogEntry::WriteTo ( file ) );
- ASSERT_RETURN_ZERO ( noErr == file.WriteDataIgnore ( &((TLetterLogEntry*)this)->fID, sizeof ( fID ) ) );
- ASSERT_RETURN_ZERO ( fSubject.Write ( file ) );
- ASSERT_RETURN_ZERO ( fSender.Write ( file ) );
- ASSERT_RETURN_ZERO ( noErr == file.WriteDataIgnore ( &((TLetterLogEntry*)this)->fTime, sizeof ( fTime ) ) );
- ASSERT_RETURN_ZERO ( noErr == file.WriteDataIgnore ( &((TLetterLogEntry*)this)->fStatus, sizeof ( fStatus ) ) );
- ASSERT_RETURN_ZERO ( fMessage.Write ( file ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- Boolean
- TLetterLogEntry::ReadFrom ( TAbstractFile& file )
- {
- ASSERT_RETURN_ZERO ( TLogEntry::ReadFrom ( file ) );
- ASSERT_RETURN_ZERO ( noErr == file.ReadDataIgnore ( &fID, sizeof ( fID ) ) );
- ASSERT_RETURN_ZERO ( fSubject.Read ( file ) );
- ASSERT_RETURN_ZERO ( fSender.Read ( file ) );
- ASSERT_RETURN_ZERO ( noErr == file.ReadDataIgnore ( &fTime, sizeof ( fTime ) ) );
- ASSERT_RETURN_ZERO ( noErr == file.ReadDataIgnore ( &fStatus, sizeof ( fStatus ) ) );
- ASSERT_RETURN_ZERO ( fMessage.Read ( file ) );
- return true;
- }
-
- /***********************************|****************************************/
-
- ostream&
- TLetterLogEntry::operator >> ( ostream& stream ) const
- {
- #if 0
- TLogEntry::operator >> ( stream );
- stream << "letter ID:" << fID << endl;
- stream << "letter sender:" << fSender << endl;
- stream << "letter subject:" << fSubject << endl;
- stream << "letter time:" << fTime << endl;
- stream << "letter status:";
-
- switch ( fStatus )
- {
- case kCompleted:
- stream << "COMPLETED" << endl;
- break;
-
- case kNotCompleted:
- stream << "NOT COMPLETED" << endl;
- break;
-
- case kUnknown:
- stream << "UNKNOWN" << endl;
- break;
-
- default:
- stream << "INVALID" << endl;
- break;
- }
-
- stream << "letter message:" << fMessage << endl;
- #else
- stream << "Entry: " << * (const RString*) fSubject << " " << fID << endl;
- #endif
-
- return stream;
- }
-
- /***********************************|****************************************/
-
- const char*
- TLetterLogEntry::GetClass () const
- {
-
- return "TLetterLogEntry";
- }
-
- /***********************************|****************************************/
-
- unsigned long
- TLetterLogEntry::GetTextLength () const
- {
- return TLogEntry::GetTextLength ();
- }
-
- /***********************************|****************************************/
-
- char*
- TLetterLogEntry::CreateText () const
- {
- return TLogEntry::CreateText ();
- }
-
- /***********************************|****************************************/
-
- void
- TLetterLogEntry::GetText ( char* buffer, unsigned long size ) const
- {
- TLogEntry::GetText ( buffer, size );
- }
-
- /***********************************|****************************************/
- /***********************************|****************************************/
-
- TLetterLogEnumerator::TLetterLogEnumerator ( TLetterLog& log ):
- fImplementation ( log )
- {
- }
-
- /***********************************|****************************************/
-
- TLetterLogEnumerator::~TLetterLogEnumerator ()
- {
- }
-
- /***********************************|****************************************/
-